// 第一题
// 实现准确的大数相加
// 6543234253452432 + 7326362323251323



// 由于js语言的精度问题对于大数进行数学计算会损失精度

// 思路分析
// 1 将大数转化成数组形式的小数 
// 2 遍历数组每一项的小数进行相加
// 3 记录每一项的进位

var bigNumberSum = function (num1, num2) { 
    let num1Arr = typeof num1 === 'string' ? num1.split('') : String(num1).split('');
    let num2Arr = typeof num1 === 'string' ? num2.split('') : String(num2).split('');
    let arr1 = num1Arr.reverse();
    let arr2 = num2Arr.reverse();
    let res = [];
    // 进位
    let flag = 0;
    let len = Math.max(num1Arr.length, num2Arr.length);
    for(let i = 0; i < len; i++) {
        let temp1 = arr1[i] || 0;
        let temp2 = arr2[i]|| 0;
        let sumNum = Number(temp1) + Number(temp2) + flag;
        // console.log('temp1:', temp1, 'temp2:', temp2, sumNum);
        if (sumNum < 10) {
            flag = 0;
        } else {
            sumNum = sumNum % 10;
            flag = 1;
        }
        res.push(sumNum);
        console.log('res:', res);
        if (i === len - 1 && flag) {
            res.push(flag);
        };
    };
    return res.reverse().join('');
 };

 console.log('bigNumberSum：', bigNumberSum(6543234253452432, 7326362323251323));
